package com.theta.gateway.infra.common.utils;

import java.util.List;

import org.springframework.util.CollectionUtils;

import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;

/**
 * list集合操作类
 * @author theta
 *
 */
@Slf4j
public class ListUtils {
	
	
	/**
	 * 集合截取操作
	 * @param <E>
	 * @param current  当前页
	 * @param size  每页记录数
	 * @param dataList --查询结果
	 * @return
	 */
	public static <E> List<E> subList(int current,int size,List<E> dataList){
		if(CollectionUtils.isEmpty(dataList)) {
			return dataList;
		}
		int start=(current-1)*size ,end=current*size;
    	log.debug("start index {} ,end index {}",start,end);
    	if(start>=dataList.size()) {
    		log.debug("当前{}下标超过总记录数{}",start,dataList.size());
    		return Lists.newArrayList();
    	}
    	if(end>dataList.size()) {
    		end=dataList.size(); 
    	}
    	return dataList.subList(start, end);
	}
	
	/**
	 * 集合截取操作--通过index
	 * @param <E>
	 * @param fromIndex  起始index
	 * @param endIndex  结束index
	 * @param dataList --查询结果
	 * @return
	 */
	public static <E> List<E> subListByIndex(int fromIndex,int endIndex,List<E> dataList){
		if(CollectionUtils.isEmpty(dataList)) {
			return dataList;
		}
    	log.debug("start index {} ,end index {}",fromIndex,endIndex);
    	if(fromIndex>=dataList.size()) {
    		log.debug("当前index{}下标超过总记录数{}",fromIndex,dataList.size());
    		return Lists.newArrayList();
    	}
    	if(endIndex>dataList.size()) {
    		endIndex=dataList.size(); 
    	}
    	return dataList.subList(fromIndex, endIndex);
	}

}
